package com.yidu.service.impl;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import com.yidu.action.vo.ListenMemberVo;
import com.yidu.common.Tools;
import com.yidu.dao.ListenMemberMapper;
import com.yidu.domain.ListenMember;
import com.yidu.service.ListenMemberService;

/**
 * 
 * 类说明:会员的服务实现类
 * @author 聂菲
 * @date 2018年11月28日
 */
@Service
public class ListenMemberServiceImpl implements ListenMemberService {

	/**
	 *使用注入会员dao
	 */
	@Resource
	ListenMemberMapper dao;

	@Override
	public List<ListenMemberVo> findAll(Map<String, Object> map) {
		//用list集合来接受dao类查询的所有会员
		List<ListenMember> list = dao.findAll(map);
		//new一个ListenMemberVo的list集合
		List<ListenMemberVo> listVo = new ArrayList<>();
		//foreach循环
		for (ListenMember listenMember : list) {
			//创建一个会员的vo对象
			ListenMemberVo vo = new ListenMemberVo();
			//把查出来的数据拷贝到vo类
			BeanUtils.copyProperties(listenMember, vo);
			//判断   如果listenMember里的OpenTime不为空
			if(listenMember.getOpenTime()!=null){
				//就给他赋值  用工具类的dateToString方法来转换
				vo.setOpenTime(Tools.dateToString(listenMember.getOpenTime()));
			}
			//判断  如果查出来的MemberGrade为1，那么就赋'普通会员'给vo里的 MemberGrades
			if(listenMember.getMemberGrade()==1){
				vo.setMemberGrades("普通会员");
			}else if(listenMember.getMemberGrade()==2){
				vo.setMemberGrades("银牌会员");
			}else{
				vo.setMemberGrades("金牌会员");
			}
			//把处理好的数据add到之前创建好的list集合里去
			listVo.add(vo);
		}
		//把集合返回出去
		return listVo;
	}

	@Override
	public int findCount(Map<String, Object> map) {
		//返回查出的行数
		return dao.findCount(map);
	}

	@Override
	public ListenMemberVo findById(String id) {
		//创建ListenMember对象用来接收dao类根据id查出的数据
		ListenMember member = dao.selectByPrimaryKey(id);
		//创建ListenMemberVo对象
		ListenMemberVo vo = new ListenMemberVo();
		//把后台查出的MemberGrade信息赋值到前台vo
		vo.setMemberGrade(member.getMemberGrade());
		//把后台查出来的数据拷贝到前台
		BeanUtils.copyProperties(member, vo);
		//把拷贝好的数据返回出去
		return vo;
	}

	@Override
	public int updateById(ListenMemberVo vo) {
		//创建ListenMember对象
		ListenMember member = new ListenMember();
		//把前台接收到的数据拷贝到后台
		BeanUtils.copyProperties(vo, member);
		//判断  如果查出来的MemberGrade为1，那么就赋'普通会员'给vo里的 MemberGrades
		if(member.getMemberGrade()==1){
			vo.setMemberGrades("普通会员");
		}else if(member.getMemberGrade()==2){
			vo.setMemberGrades("银牌会员");
		}else{
			vo.setMemberGrades("金牌会员");
		}
		//把处理好的数据返回到后台进行修改
		return dao.updateByPrimaryKeySelective(member);
	}

	@Override
	public int addMember(ListenMemberVo vo) throws ParseException {
		//创建ListenMember对象
		ListenMember member = new ListenMember();
		//把前台接收到的数据拷贝到后台
		BeanUtils.copyProperties(vo, member);
		//给OpenTime赋值  用工具类的dateToString方法来转换当前得到的时间getCurDateTime()
		member.setOpenTime(Tools.stringToDate(Tools.getCurDateTime()));
		//把处理好的数据处理好返回到后台去增加
		return dao.insertSelective(member);
	}

	@Override
	public int deleteId(String id) {
		//根据id去删除后台数据
		return dao.updateById(id);
	}
	
	@Override
	public ListenMember findByPhone(String phone) {
		////创建ListenMember对象用来接收dao类根据电话号码查出的数据
		ListenMember member = dao.findByPhone(phone);
		//如果对象不为空
		if(member!=null){
			//就把后台查出的MemberGrade进行赋值
			member.setMemberGrade(member.getMemberGrade());
		}else{
			//创建ListenMember对象
			ListenMember lm = new ListenMember();
			//给MemberGrade赋值为0
			lm.setMemberGrade(0);
		}
		//返回查出来的对象
		return member;
	}

}
